package service

import (
	"errors"
	"ksd-social-api/modules/resume/model"
	"ksd-social-api/modules/resume/model/context"
	"ksd-social-api/modules/resume/model/vo"
	"ksd-social-api/utils"
)

type ResumeTemplateService struct {
}

/**
 * @desc 查询用户简历
 * @author feige
 * @date 2023-11-14
 * @version 1.0
 */
func (service *ResumeTemplateService) FindResumeTemplate(ctx context.ResumeTemplateSearchContext, userId, systemId uint64) []*vo.ResumeTemplateVo {
	resumesList := resumeTemplateMapper.FindResumeTemplate(ctx.Keyword, ctx.Rtype, systemId)
	resumeTemplateVos := []*vo.ResumeTemplateVo{}
	for _, resumeTemplate := range resumesList {
		resumeTemplateVo := vo.ResumeTemplateVo{}
		utils.CopyProperties(&resumeTemplateVo, resumeTemplate)
		if userId > 0 {
			count := userBuyResumeTemplateMapper.CountUserBuyResumeTemplateNo(userId, resumeTemplate.Id, systemId)
			resumeTemplateVo.IsBuy = count > 0
		}
		resumeTemplateVo.ResumeFile = ""
		resumeTemplateVos = append(resumeTemplateVos, &resumeTemplateVo)
	}
	return resumeTemplateVos
}

/*
*
保存简历
*/
func (service *ResumeTemplateService) SaveUpdateResumeTemplate(ctx *context.ResumeTemplateContext) uint64 {
	// 保存入库
	var resumeTemplate model.ResumeTemplate
	utils.CopyProperties(&resumeTemplate, ctx)
	id := resumeTemplateMapper.SaveUpdateResumeTemplate(resumeTemplate)
	return id
}

/*
*
保存简历
*/
func (service *ResumeTemplateService) DelResumeTemplate(ctx *context.ResumeTemplateDelContext) bool {
	return resumeTemplateMapper.DelResumeTemplate(ctx.Id, ctx.SystemId)
}

/**
 * @author feige
 * @date 2023-10-08
 */
func (service *ResumeTemplateService) GetResumeTemplateId(templateId uint64, systemId uint64) (pvo *vo.ResumeTemplateVo, err error) {
	// 1: 根据id查询数据层
	resume, err := resumeTemplateMapper.GetById(templateId, systemId)
	if err != nil {
		return nil, err
	}
	resumeVo := vo.ResumeTemplateVo{}
	utils.CopyProperties(&resumeVo, resume)
	return &resumeVo, nil
}

/**
 * @author feige
 * @date 2023-10-08
 */
func (service *ResumeTemplateService) GetResumeTemplateFile(templateId uint64, userId uint64, systemId uint64) (string, error) {
	// 1: 根据id查询数据层
	resumeTemplate, err := resumeTemplateMapper.GetById(templateId, systemId)
	if err != nil {
		return "", err
	}
	count := userBuyResumeTemplateMapper.CountUserBuyResumeTemplateNo(userId, templateId, systemId)
	if count == 0 {
		return "", errors.New("没有支付")
	}
	// 更新下载数量
	resumeTemplateMapper.UpdateResumeTemplateDownNum(templateId, systemId)
	return resumeTemplate.ResumeFile, nil
}

/**
 * @author feige
 * @date 2023-10-08
 */
func (service *ResumeTemplateService) GetResumeTemplateReviewFile(templateId uint64, systemId uint64) (string, error) {
	// 1: 根据id查询数据层
	resumeTemplate, _ := resumeTemplateMapper.GetById(templateId, systemId)
	return resumeTemplate.ResumeReviewFile, nil
}
